package br.edu.catolica.sadbc.entity;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import org.jboss.seam.annotations.Name;

import br.edu.catolica.sadbc.core.entity.AbstractEntity;

@Entity
@Name(value = "tipoAtividade")
public class TipoAtividade extends AbstractEntity {

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id_tipoAtividade", insertable = true, updatable = false, nullable = false, unique = false)
	private Long id;
	
	@Column(insertable = true, updatable = true, nullable = false, unique = true, length = 100)
	@Length(min = 5, max = 100, message = "Campo nome com tamanho inválido.")
	@NotNull(message = "Campo nome com preenchimento obrigatório.")
	private String nome;
	
	@Column(insertable = true, updatable = true, nullable = true, unique = false)
	@Length(max = 255, message = "Campo descrição maior que 255 caracteres.")
	private String descricao;
	
	@OneToMany(mappedBy = "tipoAtividade", targetEntity = Atividade.class, fetch = FetchType.LAZY)
	private List<Atividade> atividades = new ArrayList<Atividade>();
	
	public TipoAtividade() {

	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public List<Atividade> getAtividades() {
		return atividades;
	}

	public void setAtividades(List<Atividade> atividades) {
		this.atividades = atividades;
	}
	
}
